/**
 * 用户相关的类型定义
 *
 * 此文件包含了用户实体以及用户操作相关的类型定义，
 * 包括用户模型、创建请求和更新请求等。
 *
 * @fileoverview 用户模块类型定义文件
 */

/**
 * 用户实体接口
 *
 * 定义了用户对象的完整结构，包含所有用户属性
 *
 * @example
 * ```typescript
 * const user: User = {
 *   id: 'user-123',
 *   name: 'John Doe',
 *   email: 'john.doe@example.com',
 *   createdAt: new Date('2023-01-01'),
 *   updatedAt: new Date('2023-01-02')
 * };
 * ```
 */
export interface User {
  /** 用户唯一标识符 */
  id: string;
  /** 用户姓名 */
  name: string;
  /** 用户邮箱地址 */
  email: string;
  /** 用户创建时间 */
  createdAt: Date;
  /** 用户最后更新时间 */
  updatedAt: Date;
}

/**
 * 创建用户请求接口
 *
 * 定义创建新用户时需要提供的数据结构
 *
 * @example
 * ```typescript
 * const createRequest: CreateUserRequest = {
 *   name: 'Jane Smith',
 *   email: 'jane.smith@example.com'
 * };
 * ```
 */
export interface CreateUserRequest {
  /** 用户姓名，必填项 */
  name: string;
  /** 用户邮箱地址，必填项，需要是有效的邮箱格式 */
  email: string;
}

/**
 * 更新用户请求接口
 *
 * 定义更新用户信息时可以修改的字段，所有字段都是可选的
 *
 * @example
 * ```typescript
 * const updateRequest: UpdateUserRequest = {
 *   name: 'John Smith'  // 只更新姓名
 * };
 *
 * const updateRequest2: UpdateUserRequest = {
 *   email: 'new.email@example.com'  // 只更新邮箱
 * };
 * ```
 */
export interface UpdateUserRequest {
  /** 用户姓名，可选更新字段 */
  name?: string;
  /** 用户邮箱地址，可选更新字段，需要是有效的邮箱格式 */
  email?: string;
}
